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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了下面c#程序有啥问题,应该怎么修改?谢谢了 using System; using System.Collections.Generic; using Sy相关的知识,希望对你有一定的参考价值。

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;



问题比较多,第一就是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; 是错误的。

参考技术A 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();



参考技术B 页面中有两个class类,可以有多个方法,但是不允许有两个类 参考技术C 错误有几个:
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;


参考技术D 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字段的修饰符没有
第5个回答  2011-03-04 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;




把类和变量声明为静态的公共的就好了

以上是关于下面c#程序有啥问题,应该怎么修改?谢谢了 using System; using System.Collections.Generic; using Sy的主要内容,如果未能解决你的问题,请参考以下文章

谁能告诉我MD5值的用途?怎样去用呢?下面问题补充中文件检验码的SHA和CRC32又有啥用呢?帮下忙哈!谢谢

C#程序做记事本, 记事本中的格式下面得菜单的自动换行怎么做

c#Ajax 的错误,应该如何解决?

Python有啥方法可以改变运行中程序的某个变量而不中断执行?

C# 使用其他程序的管理员权限启动程序 [重复]

c#程序中,一个程序需要连接多个不同数据库。连接语言应该怎样书写?