有没有办法在C#中"导入"静态类,比如System.Math?
我已经包括了一个比较.
Imports System.Math
Module Module1
Sub Main()
Dim x As Double = Cos(3.14) ''This works
End Sub
End Module
Run Code Online (Sandbox Code Playgroud)
VS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Math; //Cannot import a class like a namespace
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
double x = Math.Cos(3.14);
double y = Cos(3.14); //Cos does not exist in current context
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新:从C#6开始,答案现在是肯定的.
不,在C#中,您只能导入名称空间,而不能导入类.
但是,您可以给它一个更短的别名:
using M = System.Math;
Run Code Online (Sandbox Code Playgroud)
现在您可以使用别名而不是类名:
double y = M.Cos(3.14);
Run Code Online (Sandbox Code Playgroud)
但是要小心你如何使用它.大多数情况下,代码使用描述性名称更具可读性,Math而不是隐秘M.
另一个用途是从命名空间导入单个类,例如以避免类名之间的冲突:
using StringBuilder = System.Text.StringBuilder;
Run Code Online (Sandbox Code Playgroud)
现在只有命名空间中的StringBuilder类System.Text可以直接使用.
此问题的更新答案是自C#6.0以来的YES,它提供了一个using static功能.因此,例如,using static System.Math;允许System.Math访问静态成员而无需将来对该Math类进行限定.
相关SO答案:
C#中的数学参考可以缩短吗?
如何使用C#6"使用静态"功能?
外部引用:
GitHub - C#6中的新语言特性
Intellitect - 在C#6.0中使用静态语句