下面c#程序有什么问题,应该怎么修改?谢谢了 using System; using System.Collections.Generic; using Sy

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespa... using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TEST
{
class Program
{
static void Main(string[] args)
{
Console.Write(MyClass.value);
Console.Read();
}
class MyClass
{

int value = 2008;
}

}
}
展开
 我来答
本年度最佳流氓
2011-03-04 · 超过10用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:0
展开全部
问题比较多,第一就是1楼2楼所说,没有实例化,
MyClass是一个类,而value是MyClass类的成员变量,所以必须有一个实例才能调用。
不过 mf_难忘 的写法才是实例化的正确做法,1楼
MyClass m1;
只定义了m1但并未实例化,依旧不能访问的。

第二个问题,就是权限问题,value 是一个私有成员变量,在外部无法访问,即使用
MyClass myClass = new MyClass();
实例化, myClass.value 依然是无法访问的,编译时VS会报错,
解决办法是在定义 value 时使用 public 来开放权限,即:
public int value = 2008;

如果就是不想使用 new MyClass()来建立实例,也可以将value声明成静态变量,静态变量只和类相关而与类的实例无关:
class MyCalss
{
public static int value = 2008;
}
这样在Main()中
Console.Write(MyClass.value);
就可以正常运行。

再说最后一点,3楼说的可以有多个方法不允许两个类是错误的,
C#的一个类可以分开在不同的文件中定义各个部分,
也可以在一个文件中定义若干个类,这个是完全没有问题的,
倒是楼主的声明方式有一点点小问题,
MyClass类的定义写在了 Program类的内部,因此MyClass类就成了Program类的一个内部类,
其它类是无法访问到的,
一般只在比较特殊的时候才会内部类
追问
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test3
{
class Program
{
static void Main(string[] args)
{

Console.Write(MyStruct.value);
Console.Read();
}
struct MyStruct
{
int value = 2008 ;

}
}
又如何修改呢?谢谢啦
追答
这么修改:
static void Main(string[] args)
{
MyStruct ms;
ms.value = 2008;
Console.Write(MyStruct.value);
Console.Read();
}
struct MyStruct
{
public int value;
}

和class一样,结构的成员变量也需要通过一个结构的实例才能使用,
所以必须:
Mystruct ms;
因为结构是值类型,直接这么写就可以了,已经给它分配空间创建好实例了,
这一点和类是不一样的,比如以前的类MyClass, 只写 MyClass mc; 不用 new MyClass()的话,只会创建一个空指针,不会创建MyClass实例。
接下来 ms.value = 2008; 这是因为C#中值类型必须明确初始化。

而在MyStruct的定义中, 一是必须使用 public 关键字来让成员变量 value 可以被外部访问,
另一个, 结构定义中不可以初始化成员变量,
int value = 2008; 是错误的。
jesico
2011-03-07
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TEST
{
public class MyClass
{
public static int value
{
get {return 2008;}
}
}
class Program
{
static void Main(string[] args)
{
Console.Write(MyClass.value);
Console.Read();
}

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangxianbiao11
2011-03-04 · TA获得超过160个赞
知道答主
回答量:246
采纳率:0%
帮助的人:156万
展开全部
页面中有两个class类,可以有多个方法,但是不允许有两个类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qiushiji
2011-03-04 · TA获得超过502个赞
知道小有建树答主
回答量:560
采纳率:100%
帮助的人:522万
展开全部
错误有几个:
1、MyClass 中的value 没有被声明可访问性,默认是private的。
2、MyClass 的value 字段并没有添加static关键字来说明他是类成员变量。所以MyClass.value来调用时错误的。
修改如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TEST
{
class Program
{
static void Main(string[] args)
{
Console.Write(MyClass.value);
Console.Read();
}
class MyClass
{

public static int value = 2008;
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bb47466
2011-03-04 · TA获得超过601个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:288万
展开全部
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MyClass ms = new MyClass();
Console.WriteLine(ms.Value);
Console.WriteLine(ms.value);
Console.Read();
}

}
class MyClass

{
public int value = 2008;
public int Value
{
get { return value; }
}

}
}
1.类没有实例化,
2.value字段的修饰符没有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
swalp
2011-03-04 · 超过12用户采纳过TA的回答
知道答主
回答量:122
采纳率:0%
帮助的人:66.6万
展开全部
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TEST
{
class Program
{
static void Main(string[] args)
{
Console.Write(MyClass.value);
Console.Read();
}
public static class MyClass
{
public static int value = 2008;
}

}
}
把类和变量声明为静态的公共的就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式