C#中的类:字段、属性、方法

C++的类中可以有三种内容:成员变量、成员函数和友元。

一般来说,成员变量描述类的属性,成员函数描述类的操作,友元则是一种特殊的声明,被声明为友元的函数或类可以操作自己的私有成员变量和成员方法。

在Java中,类的成员有两类:属性,相当于C++的成员变量;方法,相当于C++的成员函数。

而在C#中,类的成员有四种:字段、属性、方法和事件(事件还没学到,暂缓解释)。

字段相当于C++中的成员变量和Java中的属性,就是在类中定义的变量(可以是基本类型或引用类型),一般来说,字段都被定义为私有。

方法相当于C++中的成员函数和Java中的方法,也就是在类里面定义的函数。

新的东西之一:属性

先用Java来说,Java中,因为类的属性一般定义为私有,在类的外部不能被操作,所以必须提供相应的函数来设置或获取私有属性的值。一般来说,设置属性值的方法以set开头,获取属性值的方法以get开头。

虽然在C#中也可以用同样的方法来操作私有字段,不过C#中提供了一种新的特性来达到这一目的,这就是属性。

首先来看属性的定义:

访问修饰符 类型 属性名

{

get

{

代码段

}

set

{

代码段

}

}

从形式上看,属性的定义很像方法的定义,只是没有参数而已。

再来看属性的使用,使用属性时很像是使用共有字段。

可以给属性赋值,也可以直接使用属性的值。例如:

class MyClass
{
    public int MyInt    //名为MyInt的公有属性
    {
        get
        {
            //代码段
        }
        set
        {
            //代码段
        }
    }
}

在程序中,可以这样来使用该属性

MyClass c = new MyClass();
c.MyInt = 100;    //
Console.WriteLine(c.MyInt);

是不是很像使用字段呢。

时间: 2024-10-21 00:28:16

C#中的类:字段、属性、方法的相关文章

Delphi中TStringList类常用属性方法详解

//TStringList 常用方法与属性: var List: TStringList; i: Integer; begin List := TStringList.Create; List.Add('Strings1');           {添加} List.Add('Strings2'); List.Exchange(0,1);             {置换} List.Insert(0,'Strings3');      {插入} i := List.IndexOf('String

C 中SqlParameter类的使用方法小结

C# 中SqlParameter类的使用方法小结 在c#中执行sql语句时传递参数的小经验 1.直接写入法: 例如: int Id =1; string Name="lui"; cmd.CommandText="insert into TUserLogin values("+Id+",'"+Name+"')"; 因为Id是数值,所以在传递的时候只需要在sql字符串中用"+Id+"即可实现,而   Name是

JAVA中Runtime类以及exec()方法,Process的使用

package ioTest.io1; /* * Runtime:每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接. * 这也是jvm实现跨平台的一个重要原因. * 可以通过 getRuntime 方法获取当前运行时. * API分析: * public class Runtime extends Object * 每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接. * 可以通过 getRuntime 方法获

php中调用类的属性和函数的方法->_=>_::_$this->区别

在php中有同学经常搞不明白->,=>,::,$this->的作用,下面通过例子讲解下. 一.->用来引用一个类的属性(变量).方法(函数) 可以把->理解成调用的意思 如: <?php Class a{ Var $id; Function add(){ $this->id="test"; echo "abc"; } } $b = new a; $b->add();  //调用类a中的add()方法, 输出为abc E

关于Java中String类的hashCode方法

首先来看一下String中hashCode方法的实现源码 1 public int hashCode() { 2 int h = hash; 3 if (h == 0 && value.length > 0) { 4 char val[] = value; 5 6 for (int i = 0; i < value.length; i++) { 7 h = 31 * h + val[i]; 8 } 9 hash = h; 10 } 11 return h; 12 } 在Stri

类:属性方法的私有公有详解

1 # -*- coding: UTF-8 -*- 2 # 无论名称是self还是cls,类方法或实例方法都是把第一个参数默认成cls或self,即调用类或调用实例才能使用. 3 4 class JustCounter: 5 publicCount = 0 # 公开属性 6 __secretCount = 0 # 私有属性 7 def count_secret(self): 8 print self.__secretCount 9 def count_public(self): 10 print

Java中Object类的公有方法

HashCode();wait();notify();equals();getClass();toString();clone();finalize(); 这里只是简单介绍一下其中的几个函数: HashCode(): * As much as is reasonably practical, the hashCode method defined by * class {@code Object} does return distinct integers for distinct * obje

类的属性方法

静态方法: @staticmethod 装饰器可以把一个方法变成静态方法. 静态方法既不能访问公有属性,也不能访问实例属性 .这样的话,其实跟类已经没什么关系了.它与类唯一的关联就是需要通过类名来调用这个方法 1 class Perison(object): 2 3 def __init__(self,name): 4 self.name = name 5 6 @staticmethod #静态方法:既不能访问公有属性,也不能访问实例属性 7 def eat(name,food): 8 prin

.net中 自定义类的属性和关键字重名的解决方法

使用ztree时,用到checkbox勾选操作,当编辑操作时已勾选的需要被勾上,需要用到checked属性(checked=true),而C#类中,checked与关键字发生冲突,查找了解决办法: 方法有三... 1.大写...Checked...2.加@[email protected]   (我使用了此方法) 3.指定序列化成员名称... [DataMember(Name = "checked")] public bool IsChecked; 序列化后自动把@去掉了

java反射之遍历类中所有内部类及属性方法

package com.zr.entity; /** * 仅用于测试类,从实际项目中抽出来的 * @author zr * */ public class Constant { /** * 参数校验枚举类 * @author zr * */ public static enum ResultObjectType { //成功 SUCC(0), //失败,异常 ERROR(1), //参数错误 PARAMERROR(2), //数据为空 NODATA(9); private Integer val