Полное руководство. С# 4.0
Шрифт:
csc /r:Asm1=test1.dll /r:Asm2=test2.dll test3.cs Обратите внимание на применение параметра /r, уведомляющего компилятор о том, что ссылка на метаданные находится в соответствующем файле. В данном слу чае псевдоним Asm1 связывается с файлом test1.dll, а псевдоним Asm2 — с файлом test2.dll. В самой программе псевдонимы указываются в приведенных ниже операторах с модификатором extern, которые располагаются в самом начале файла.
extern alias Asm1; extern alias Asm2; А в методе Main псевдонимы используются для разрешения неоднозначности ссылок на класс MyClass. Обратите внимание на следующее применение псевдонима для обращения к классу MyClass.
Asm1::MyNS.MyClass В этой строке кода первым указывается псевдоним, затем оператор разрешения пространства имен, далее имя пространства имен, в котором находится класс с неодно значным именем, и, наконец, имя самого класса, следующее после оператора-точки. Та же самая общая форма пригодна и для других внешних псевдонимов. Ниже приведен результат выполнения данной программы.
Конструирование из файла MyClass1.dll. Конструирование из файла MyClass2.dll. ```
ГЛАВА 21. Пространство имен System
В этой главе речь пойдет о пространстве имен System. Это пространство имен самого верхнего уровня в би блиотеке классов для среды .NET Framework. В нем непосредственно находятся
Кроме того, в пространство имен System входит много вложенных пространств имен, поддерживающих отдель ные подсистемы, например System.Net. Некоторые из этих пространств имен рассматриваются далее в этой кни ге. А в этой главе речь пойдет только о членах самого про странства имен System. Члены пространства имен System
Помимо большого количества классов исключений, в пространстве имен содержат ся приведенные ниже классы. ActivationContext Activator AppDomain AppDomainManager AppDomainSetup Applicationld Applicationldentity Array AssemblyLoadEventArgs Attribute AttributeUsageAttribute BitConverter Buffer CharEnumerator CLSCompliantAttribute Console ConsoleCancelEventArgs ContextBoundObject ContextStaticAttribute Convert DBNull Delegate Enum Environment EventArgs Exception FileStyleUriParser FlagsAttribute FtpStyleUriParser GC GenericUriParser GopherStyleUriParser HttpStyleUriParser Lazy<T> Lazy<T, TMetadata> LdapStyleUriParser LoaderOptimizationAttribute LocalDataStoreSlot MarshalByRefObject Math MTAThreadAttribute MulticastDelegate NetPipeStyleUriParser NetTcpStyleUriParser NewsStyleUriParser NonSerializedAttribute Nullable Object ObsoleteAttribute OperatingSystem ParamArrayAttribute Random ResolveEventArgs SerializableAttribute STAThreadAttribute String StringComparer Th rea dStaticAttri bute TimeZone TimeZonelnfo TimeZonelnfo AdjustmentRule Tuple Tuple<...> (различные формы) Type Unhandled ExceptionEventArgs Uri UriBuilder Uri Parser UriTemplate UriTemplateEquivalenceComparer UriTemplateMatch UriTemplateTable UriTypeConverter ValueType Version WeakReference
Ниже приведены структуры, определенные в пространстве имен System. Arglterator ArraySegment<T> Boolean Byte Char ConsoleKeylnfo DateTime DateTimeOffset Decimal Double Guid Int16 Int32 Int64 IntPtr ModuleFlandle Nullable<T> RuntimeArgumentFlandle RuntimeFieldFlandle RuntimeMethodHandle RuntimeTypeHandle Sbyte Single TimeSpan TimeZonelnfo TransitionTime TypedReference Ulnt16 Ulnt32 Ulnt64 UIntPtr Void
В пространстве имен System определены приведенные ниже интерфейсы. _AppDomain lappDomainSetup lAsyncResult lCloneable IComparable IComparable<T> IConvertible ICustomFormatter IDisposable IEquatable<T> IFormatProvider IFormattable IObservable<T> IObserver<T> IServiceProvider
Ниже приведены делегаты, определенные в пространстве имен System. Action Action<...> (различные формы) AppDomainlnitializer AssemblyLoadEventHandler AsyncCallback Comparison<T> ConsoleCancelEventHandler Converter<Tlnput, VOutput> CrossAppDomainDelegate EventHandler EventHandler<TEventArgs> Func<...> (различные формы) Predicate<T> ResolveEventHandler UnhandledExceptionEventHandler
В пространстве имен System определены приведенные ниже перечисления. ActivationContext.contextForm AppDomainManagerlnitializationOptions AttributeTargets Base64Formatting0ptions ConsoleColor ConsoleKey ConsoleModifiers ConsoleSpecialKey DateTimeKind DayOfWeek Environment.SpecialFolder Environment SpecialFolderOption EnvironmentVariableTarget GCCollectionMode GCNotificationStatus GenericUriParserOptions LoaderOptimization MidpointRounding PlatformID StringComparison StringSplitOptions TypeCode UriComponents UriFormat UriHostNameType UrildnScope UriKind UriPartial
Как следует из приведенных выше таблиц, пространство имен System доволь но обширно, поэтому в одной главе невозможно рассмотреть подробно все его со ставляющие. К тому же, некоторые члены пространства имен System, в том числе Nullable, Type, Exception и Attribute, уже рассматривались в части I или будут представлены в последующих главах части II. И наконец, класс System.String, в ко тором определяется тип string для символьных строк в С#, обсуждается вместе с во просами форматирования в главе 22. В силу этих причин в настоящей главе рассматри ваются только те члены данного пространства имен, которые чаще всего применяются в программировании на C# и не поясняются полностью в остальных главах книги. Класс Math
В классе Math определен ряд стандартных математических операций, в том чис ле извлечение квадратного корня, вычисление синуса, косинуса и логарифмов. Класс Math является статическим, а это означает, что все методы, определенные в нем, отно сятся к типу static, объекты типа Math не конструируются, а сам класс Math неявно герметичен и не может наследоваться. Методы, определенные в классе Math, перечис лены в табл. 21.1, где все углы указаны в радианах.
В классе Math определены также два следующих поля: public const double Е
public const double PI где E — значение основания натурального логарифма числа, которое обычно обозна чается как е; a PI — значение числа пи.
Таблица 21.1. Методы, определенные в классе Math Метод Описание public static double Abs(double value) Возвращает абсолютную величину value public static float Abs(float value) Возвращает абсолютную величину value public static decimal Abs(decimal value) Возвращает абсолютную величину value public static int Abs(int value) Возвращает абсолютную величину value public static short Abs(short value) Возвращает абсолютную величину value public static long Abs(long value) Возвращает абсолютную величину value public static sbyte Abs(sbyte value) Возвращает абсолютную величину value public static double Acos(double d) Возвращает арккосинус d. Значение d должно находиться в пределах от -1 до 1 public static double Asin(double d) Возвращает арксинус d. Значение d должно находиться в пределах от -1 до 1 public static double Atan(double d) Возвращает арктангенс d public static double Atan2(double y, double x) Возвращает арктангенс частного от деления у/ х public static long BigMulfint a, int b) Возвращает произведение а*b в виде значения типа long, исключая переполнение public static double Ceiling(double a) Возвращает наименьшее целое, которое представлено в виде значения с плавающей точкой и не меньше а. Так, если а равно 1,02, метод Ceiling возвращает значение 2,0. А если а равно -1,02, то метод Ceiling возвращает значение -1 public static double Ceiling(decimal d) Возвращает наименьшее целое, которое представлено в виде значения десятичного
В приведенном ниже примере программы метод Sqrt служит для расчета ги потенузы по длине противоположных сторон прямоугольного треугольника согласно теореме Пифагора. // Расчет гипотенузы по теореме Пифагора. using System; class Pythagorean { static void Main { double s1; double s2; double hypot; string str; Console.WriteLine("Введите длину первой стороны треугольника: "); str = Console.ReadLine; s1 = Double.Parse(str); Console.WriteLine("Введите длину второй стороны треугольника: "); str = Console.ReadLine; s2 = Double.Parse(str); hypot = Math.Sqrt(s1*s1 + s2*s2); Console.WriteLine("Длина гипотенузы равна " + hypot); } }