C# 如何访问类字段

C# 如何访问类字段,c#,C#,我正在学习c#语言,并且仍然掌握了解变量范围的基本知识。我不知道如何访问C2类C1类中的文件 我在声明int I时尝试过使用public关键字 using System; namespace MyClass { class C1 { int i = 5; } class C2 { int j = i; static void Main() { Console.Writ

我正在学习c#语言,并且仍然掌握了解变量范围的基本知识。我不知道如何访问C2类C1类中的文件

我在声明int I时尝试过使用public关键字

using System;

namespace MyClass
{
    class C1
    {
        int i = 5;
    }
    class C2
    {
        int j = i;
        static void Main()
        {
            Console.WriteLine($"Value is {i}");
        }
    }
}
我希望输出“Value is 5”,但出现以下错误

test.cs(11,10): error CS0103: The name 'i' does not exist in the current context test.cs(14,33): error CS0103: The name 'i' does not exist in the current context test.cs(7,6): warning CS0414: The field 'C1.i' is assigned but its value is never used cs(11,10):错误CS0103:名称“i”在当前上下文中不存在 cs(14,33):错误CS0103:名称“i”在当前上下文中不存在 test.cs(7,6):警告CS0414:字段“C1.i”已分配,但从未使用过它的值 C1 C1实例=新的C1(); int j=C1.i

Oh和变化inti=5;对公众的影响i=5


它并不完美,但这应该让你开始学习

类只是一个模板。您必须为它创建一个实例才能访问字段,例如
i
。不要忘记将它们公开,因为默认访问器是私有的。我会推荐一个好的C#教程。将其公开,并使其成为一个属性。请注意,代码中包含的是“实例字段”,而不是“类字段”。有一种类似于“类字段”(或者更确切地说是“类变量”)的东西,在.NET中被称为“静态字段”(静态字段是通过在字段声明中使用
static
关键字来声明的)。我使用static关键字来实现它。谢谢@elgonzo。但是,我仍然无法使用该实例field@elgonzo这项工作
使用系统;命名空间MyClass{class C1{public static int i=5;}class C2{static void Main(){Console.WriteLine($“值为{C1.i}”);}}}}
如果我删除C1中的
static
,并将C2更改为
C1 c1Obj=new C1();静态void Main()“最佳实践,只是对您问题的一个回答,我个人会使用公共属性来表示“I”(并且从不使用单个字母表示变量)。我使用System;namespace MyClass{class C1{public int I=5;}class C2{C1 c1instance=new C1();int j=c1instance.i;static void Main(){Console.WriteLine($“Value is{j}”);}}}}
但我得到以下错误
test.cs(12,17):错误CS0236:字段初始值设定项无法引用非静态字段、方法或属性'C2.c1instance'test.cs(15,43):错误CS0120:非静态字段、方法或属性“C2.j”需要对象引用。