C#对象与方法

一、相关概念:

1、对象:现实世界中的实体

2、 类:具有相似属性和方法的对象的集合

3、面向对象程序设计的特点:封装  继承 多态

二、类的定义与语法

1、定义类: 修饰符 类名称 类成员

a)定义类语法:

修饰符 class 类名
{
   类成员
}

2、类的访问修饰符:public internal

a) public:可访问域是所在的程序 和任何引用的程序 访问不受限制

定义语法:
 public class 类名
 {
   类成员
 }

b) internal:可访问域定义范围内 (默认访问修饰符)

语法:

(internal) class 类名
 {
   类成员
 }

3、类成员:数据成员和字段

a)  数据成员:字段和常量

字段:变量

声明:类型 字段名

例:

 代码如下 复制代码

public class Persion
{
    public string name;
}

class Test
{
   static void Main(string[] args)
   {
       Persion persion=new Persion();
       persion.name="kaka";
       Console.WriteLine("{0}",persion.name);
   }
}

b) 方法成员
  声明:
 修饰符 返回值类型 方法名(参数列表)
 {
      方法体
 }
   修饰符:如:public、private、protected、internal
   返回值类型:若方法无返回值,则使用 void
例:

 代码如下 复制代码

public void Method()
{
  Console.riteLine("方法声明 www.111Cn.net");
}

4、成员的访问修饰符:public、private、protected、internal

a)  public:公有成员

b) private:私有成员

c) protected:保护成员

d) internal:内部成员

例:

 代码如下 复制代码

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

namespace ConsoleApplication2
{
    public class Employee
    {
        private float sum;
        public int day;
        public float wage;
        //定义方法输出工资信息
        public void Show()
        {
            sum = day * wage;
            Console.WriteLine("工作时间:{0},每天工资:{1},总工资:{2}",day,wage,sum);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Employee employee = new Employee();
            employee.day = 20;
            employee.wage = 50;
            //employee.sum:无法访问  因为它为私有成员
            //调用方法现实工资
            employee.Show();
        }
    }
}

三、实例化对象:关键字:new

例:

 代码如下 复制代码

?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    public class car
    {
        private string carName;
        private string carType;
        private int price;
 
        public string CarName
        {
            get { return carName; }
            set { carName = value; }
        }
        public string CarType
        {
            get { return carType; }
            set { carType = value; }
        }
       
        public int Price
        {
            get { return price; }
            set { price = value; }
        }
 
        public void  action()
        {
            Console.WriteLine("一辆名叫{0}车,型号是{1},价钱是:{2}",carName,carType,price);
        }
         
    }
 
    //创建实例并访问字段和方法
    class Program
    {
        static void Main(string[] args)
        {
            //创建car类的实例
            car vehicle = new car();
            //给实例赋值
            vehicle.CarName = "奔驰";
            vehicle.CarType = "XZ001";
            vehicle.Price = 1000000;
 
            //调用方法
            vehicle.action();
 
 
 
        }
    }
}

C#对象数组排序方法

排序是编程中常用的法算之一,排序的方法有很多种,下面介绍一种简单有效的排序方法,代码如下:

 代码如下 复制代码
private bool isReverse = false;
private void Sort(PersonalNotificationEntity [] list,string key)
{
if ( isReverse )
{
Array.Reverse(list);
isReverse = false;
}
else
{
int len = list.Length;
Type type = typeof(PersonalNotificationEntity);
object [] keys = new object[len];
for(int i = 0 ; i < len ; i++)
{
keys[i] = type.InvokeMember(key,BindingFlags.GetField ,null,list[i],null);
}
Array.Sort(keys,list);
isReverse = true;
}
}

这里使用了Array.Sort()和Array.Reverse()方法对数据进行正/反排序,变量isReverse做为反排序的标志位
方法传入了2个参数,一个是要排序的对象数组list,一个是排序关键字key,即要对象的根据哪个属性或字段来进行排序(这个值是等于对象的属性/字段名)
type.InvokeMember()方法可以得到对象实例的属性/字段值,这里使用的是字段
在得到数组中的每一个要排序的字段值后,把这个字段值数组做为Array.Sort()方法的参数传入,Sort方法就会将对象数按这个字段的值进行排序

四、属性

1、
 a) 概念:用于访问类的字段的成员
 b) 属性用途:保证数据安全   作数据的验证

2、声明:
访问修饰符 数据类型 属性名
{
  get{}
  set{}
}

3、get 访问器
  a) 含义:不带参数,用于向外部指定字段的值,通常使用return 语句返回某个变量的值 在属性取值时自动调用
  b) get 访问器的使用:

 代码如下 复制代码

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

namespace ConsoleApplication2
{
    public class Employee
    {
        private string name = "微微";

public string Name
        {
            get
            {
                Console.WriteLine("程序访问了get访问器");
                return name;
            }

}
    }
    class Program
    {
        static void Main(string[] args)
        {
            Employee employee = new Employee();
            Console.WriteLine("访问属性之前");
            Console.WriteLine();
            Console.WriteLine(employee.Name);
            Console.WriteLine();
            Console.WriteLine("访问属性之后");
        }
    }
}

4、set 访问器:返回值类型为void

5、属性类型:

a) 读/写:有get()和set()访问器的属性
 b) 只读:有get(0访问器的属性,对成员提供读取
 c)只写(不推荐使用):仅包含set() 访问器

五、方法的参数

1、值参数:按值传递

例:

 代码如下 复制代码

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

namespace ConsoleApplication2
{
    public class Test
    {
        public void Method(int x,int y)
        {
            int temp = x;
            x = y;
            y = temp;
            Console.WriteLine("交换之前:x={0},y={1}",x,y);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            int a = 2;
            int b = 5;
            Test test = new Test();
            test.Method(a,b);
            Console.WriteLine("交换之后:x={0},y={1}",a,b);
        }
    }
}

2、引用参数:向方法传递实参在内存中的地址,按地址传递

例:

 代码如下 复制代码

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

namespace ConsoleApplication2
{
    public class Test
    {
        public void Method(ref int  x,ref int y)
        {
            int temp = x;
            x = y;
            y = temp;
            Console.WriteLine("交换之前:x={0},y={1}",x,y);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            int a = 2;
            int b = 5;
            Test test = new Test();
            test.Method(ref a,ref b);
            Console.WriteLine("交换之后:x={0},y={1}",a,b);
        }
    }
}

3、输出参数:从方法传递回一个结果

关键字:out http://www.111cn.net/net/net/46994.htm

例:

 代码如下 复制代码

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

namespace ConsoleApplication2
{
    public class Test
    {
        public void Method(int x,out int y)
        {
            y = x + x;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            int outy;
            test.Method(35, out outy);
            Console.WriteLine("y={0}",outy);
        }
    }
}

4、数组型参数:参数只允许是一组数组,当方法的参数前带有params关键字时,就是带数组型参数的方法(使用引用传递)

例:

 代码如下 复制代码

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

namespace ConsoleApplication2
{
    public class Test
    {
        public void Method(params int[] num)
        {
            Console.WriteLine("数组大小:{0}",num.Length);
            foreach (int i in num)
            {
                Console.Write("{0}",i);
            }
            Console.WriteLine();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            int[] nums = { 1, 2, 3, 4, 5 };
            Test test = new Test();
            test.Method(nums);
            test.Method(2,3,4,5);
            test.Method();
        }
    }
}

补充 对象 方法 属性有和区别

在面向对象里面,对象和类是不同的,对象是特定类的一个实例,比如如果车是一个类的话,某个人的一辆奔驰车就是一个对象,它是车这个类的实例。类是抽象的,而对象是具体的。方法是定义在对象上的操作,属性是记录对象性质和状态的变量,拿上面车的例子来说,车的重量,最大速度是车的属性,启动,停在这些动作则可以定义为车的方法。我说的可能不太准确,建议楼主看看面向对象相关的书籍。

补充:
对象和类当然是不一样的,对象是类的具体化(其实不准确),再打个比方吧,
告诉你猫是一个类,它包含两个属性,重量和毛色,
根据上面的信息你能知道是指是哪只猫吗?不能吧,因为你不知道它的重量和毛色。 现在把猫实例化,即指定它的重量和毛色,假定为1kg、黑色,而这个1kg黑色的猫就是对象了,同样,2kg白色的猫,3kg黄色的猫,等都是对象。

当然1kg黑色的猫也可以是作为一个类,为这个类加个主人属性,
实例化类就得到对像,比如李四的(1kg黑色猫),张三的(1kg黑色猫)... 就是这个类的对象。

接着,李四的lkg黑色猫也可以成为一个类了,那这个类的对象呢,和上面一样,加个能够区分的属性。
......
这样就形成了类的层次结构了,然后父类,子类(派生类),继承等概念都可以理解了。

 

asp.net中C#对象与方法 属性详解的更多相关文章

  1. JavaScript对象的property属性详解

    JavaScript对象的property属性详解:https://www.jb51.net/article/48594.htm JS原型与原型链终极详解_proto_.prototype及const ...

  2. jQuery Mobile中jQuery.mobile.changePage方法使用详解

    jQuery.mobile.changePage方法用的还是很多的.作为一个老手,有必要对jQuery mobile中实用方法做一些总结.系列文章请看jQuery Mobile专栏.jquery.mo ...

  3. Jquery中find与each方法使用详解

    本文实例讲述了jQuery中find与each方法用法.分享给大家供大家参考.具体如下: 一.find()方法 jquery选择器非常强大,利用css的命名规约,可以更快更方便的找出想要的元素. 图解 ...

  4. 第15.24节 PyQt(Python+Qt)入门学习:Model/View架构中QTableView的作用及属性详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在Designer的部件栏Item Views中提供了PyQt和Qt已经实现好的table ...

  5. Lua中强大的元方法__index详解

    今天要来介绍比较好玩的内容:__index元方法 我是备胎,记得回头看看 咳咳,相信每一位女生都拥有或者不知不觉中拥有了一些备胎,啊!当然,又或许是成为过别人的备胎. 没有备胎的人,就不是完整的人生. ...

  6. asp.net中web.config配置节点大全详解

    最近网上找了一些关于Web.config配置节点的文章,发现很多都写的都比较零散,而且很少有说明各个配置节点的作用和用法.搜索了一下发现有一篇写的不错,这里引用一下 原文地址 http://www.c ...

  7. asp.net中web.config配置节点大全详解【转】

    web.config 文件查找规则: (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找. (2)如果当前页面所在目录下不存在web ...

  8. 85.常用的返回QuerySet对象的方法使用详解:defer,only

    defer(),only(): 这两个方法都会返回一个"QuerySet"对象,并且这个"QuerySet"中装的是模型,不像values()和values_l ...

  9. 84.常用的返回QuerySet对象的方法使用详解:select_related, prefetch_related

    1.select_related: 只能用在一对多或者是一对一的关联模型之间,不能用在多对多或者是多对一的关联模型间,比如可以提前获取文章的作者,但是不能通过作者获取作者的文章,或者是通过某篇文章获取 ...

随机推荐

  1. 剑指OFFER之旋转数组的最小数字(九度OJ1386)

    题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转 ...

  2. 【不积跬步,无以致千里】vim复制

    用vim这么久 了,始终也不知道怎么在vim中使用系统粘贴板,通常要在网上复制一段代码都是先gedit打开文件,中键粘贴后关闭,然后再用vim打开编辑,真的不 爽:上次论坛上有人问到了怎么在vim中使 ...

  3. 使用Unity制作游戏关卡的教程(二)

    转自:http://gamerboom.com/archives/75554 作者:by Matthias Zarzecki 本文是“使用Unity制作<The Fork Of Truth> ...

  4. VS2012开发ActiveX插件 尝试1

    今天闲来无聊研究了下 ActiveX插件开发,以前一直以为很牛逼,然后发现还是比较简单的东西.. 首先: 在开始前 准备好 VS12开发工具,cabarc.exe 工具(注:这是 用来 将文件打包成c ...

  5. 【Winform】Winform 制作一键发布web

    前言 最近web网站有个需要,就是打包给客户,客户能够自己手动的进行傻瓜式的安装发布web.找了很多资料,其中涉及到 文件解压 IIS操作 数据库还原 等. 发现现在就主要是两种解决方案: ①:使用V ...

  6. ASP.NET MVC 3 入门级常用设置、技巧和报错

    1.ASP.NET MVC 3 如何去除默认验证 这个默认验证是在web.config配置文件中设置的    <add key="ClientValidationEnabled&quo ...

  7. 从零开始学习Hadoop--前言

    Hadoop是最著名使用最广泛的分布式大数据处理框架,它是用Java开发的. 这本书有一个明确的目标:只要有一台能上网的计算机,就可以让读者在最短的时间内,学会Hadoop的初级开发.所以,这本书只讲 ...

  8. delphi 16 网页缩放

    网页放大 网页缩小         WebBrowser1.OleObject.Document.Body.Style.Zoom := 0.50; 缩放网页 Ctrl+中键↑ 放大 Ctrl+中键↓ ...

  9. SSL连接建立过程分析(1)

    Https协议:SSL建立过程分析 web訪问的两种方式: http协议,我们普通情况下是通过它訪问web,由于它不要求太多的安全机制,使用起来也简单,非常多web网站也仅仅支持这样的方式下的訪问. ...

  10. 理解WebKit和Chromium: 调试Android系统上的Chromium

    转载请注明原文地址:http://blog.csdn.net/milado_nju 1. Android上的调试技术 在Android系统上,开发人员能够使用两种不同的语言来开发应用程序,一种是Jav ...