我有一个C ++程序
int x=100; //Global declaration
main()
{
int x=200;
{
int y;
y=x;
cout<<"Inner Block"<<endl;
cout<<x<<endl;
cout<<y<<endl
cout<<::x<<endl;
}
cout<<"Outer Block"<<"\n";
cout<<x<<"\n";
cout<<::x;
}
该计划的输出是: 内胎 200 200 100 外块 200 100
我想在c#中尝试类似的东西但是当我输入:: x时,我给了我错误... 请帮忙
我试过的是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CAScopeResolution_Operator
{
class Program
{
static int x = 100;
static void Main(string[] args)
{
int x = 200;
{
int y;
y = x;
Console.WriteLine("Inner Block");
Console.WriteLine(x);
Console.WriteLine(y);
Console.WriteLine(Program.x);
}
Console.WriteLine("Outer Block");
Console.WriteLine(x);
Console.WriteLine(Program.x);
Console.ReadLine();
}
}
}
我已声明静态x,但我不认为这是c#中类似代码的解决方案...请帮忙
答案 0 :(得分:3)
由于C#
不像C++
那样处理全局变量,::
具有不同的含义。这是关于名称空间的,因为您可以通过它所属的类来识别每个成员
因此,如果您具有共享标识符但位于不同命名空间的名称空间和/或类型,则可以使用::
- 运算符来标识它们。
using colAlias = System.Collections;
namespace System
{
class TestClass
{
static void Main()
{
// Searching the alias:
colAlias::Hashtable test = new colAlias::Hashtable();
// Add items to the table.
test.Add("A", "1");
test.Add("B", "2");
test.Add("C", "3");
foreach (string name in test.Keys)
{
// Searching the global namespace:
global::System.Console.WriteLine(name + " " + test[name]);
}
}
}
}
生成此
A 1
B 2
C 3
有关MSDN参考,请参阅here。