C#中错误提示应为get或set访问器,求高手解答。急~~~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中错误提示应为get或set访问器,求高手解答。急~~~相关的知识,希望对你有一定的参考价值。

代码如下,提示错误的地方是第一个if的位置。
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication7

class Program

static void Main(string[] args)

Console.WriteLine("请输入第一个数字");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第一个数字");
double num2 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第一个数字");
double num3 = Convert.ToDouble(Console.ReadLine());
double num;
Program.pro=new Program();
pro.judge();
Console.WriteLine("三个数中的最大数是:"+num);

public void judge

if (num1>num2)

num=num1;

else if (num2>num3)

num=num2;

else

num = num3;



是成员变量,字段是私有的,在程序内部使用,而属性则是对外提供访问字段的权限(外是指这个类以外的其他类),可能你会问为什么不直接把字段写成PUBLIC的对外公开,如果这样做了就失去了可控性,比如要让一个字段,在外部访问时只能读取而不能修改,那么就可以只写get。又比如,赋值的时候不是什么值都能赋的,要做限制就可以在set中控制。不然的话,别人给这个段赋值多少就是多少。要是你写的程序被人破解,那你这值就被随便改了。没安全性可言,一点也不可控。说白了属性就是用来控制外部访问的。关于接口和类的区别我就不多说了,(打字累啊)只说两点,一类只能被继承一个,而接口可以被实现多个,另一点就是接口可以是毫无关系的两种类型而具有共同的行为,即方法。所以用来实现多态性是比类好。 参考技术A using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication7

class Program

static void Main(string[] args)

Console.WriteLine("请输入第一个数字");
double num1 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第一个数字");
double num2 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入第一个数字");
double num3 = Convert.ToDouble(Console.ReadLine());
double num;
Program pro=new Program();
num = pro.judge(num1,num2,num3);
Console.WriteLine("三个数中的最大数是:"+num);

public int judge(int num1, int num2, int num3)

int num;
if (num1>num2)
if(num1>num3)
num = num1;
else
num = num3;
else
if(num2>num3)
num = num2;
else
num = num3;

return num;


参考技术B judge这里是方法,应该是public void judge(),加上()就可以了,否则编译器认为judge是属性才会提示你用get或set访问器。 参考技术C num没有定义,所以提示你把做成get/set访问器。你定义的那个num在main方法中,出了main就访问不到了。最简单的方法就是把double num;放在class定义的第一行。 参考技术D num num1....等 是main函数里面的变量 judge方法里面是不能访问的 必须在main方法外面声明才行本回答被提问者和网友采纳

C#中实体类的get、set的疑问,请大侠解答

public int Age

getreturn _age;
set_age=value;


public int Age

get;
set;

他们两个是一样的吗

单纯就这两个的对比而言,是一样的,只是“手动”和“自动”的区别。
第二个只是一种简写,实际上编译器会帮你加一个私有成员。
你可以验证一下:编译代码,然后再反编译,你就会发现结果了。

但是……
不建议第二种写法,原因:
1、灵活性
比如要对年龄验证,输入负数时抛出异常,第二种没办法。
2、效率
如果有构造函数,参数是年龄。第一种你可以对私有成员赋值、第二种只能对属性赋值,效率上是第一种高。

另外,这两种写法在“封装”上是没什么区别的!
参考技术A 效果是一样的!但是实际应用有区别。
第一种写法比较灵活,_age 为私有成员,而对其的封装Age成为属性。通过属性来保护私有成员,可以做到对成员的访问控制,比如:
只读:
public int Age

getreturn _age;

只写
public int Age

set_age=value;

读写
public int Age

getreturn _age;
set_age=value;

_age作为私有成员在类的内部可以任意的操作,这体现的封装的好处,而外部只能通过Age这个属性来访问。
参考技术B 是的,简单的说,前者是用于自定义的获取或设置Age的值,如果不做特殊定制,就是一样的 参考技术C 一样的,后一种是简写形式的。 参考技术D 后一种写法是C# 3.0中的自动属性,也就是说如果没有其它的逻辑判断(比如对赋值进行判定等等操作),仅仅只是简单的赋值和取值 ,那就可以用后面那种简单的写法,反之仍然还要用上一种。

以上是关于C#中错误提示应为get或set访问器,求高手解答。急~~~的主要内容,如果未能解决你的问题,请参考以下文章

C#读Excel的问题,总是出现如下错误,是啥原因,求高手解答

在windows7里打开active ports提示 拒绝访问 这是怎么了?求高手解答

关于C# get set的简单用法

ThinkPHP 做的导出功能提示加载期间错误如下图,求高手解答急急急:

C# 接收 java webservices接口返回的Byte[] 数组时,大于90M报错System.OutOfMemoryException 求高手解答

C#属性访问器