zoukankan      html  css  js  c++  java
  • C# 扩展方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication1.test1
    {
        //原文:https://www.cnblogs.com/wolf-sun/p/4216256.html
        //扩展方法,在无法修改源代码的情况下,提供了一种为该类来添加行为的方式
    
        /*
            1.定义一个静态类以包含扩展方法。 该类必须对客户端代码可见。 
            2.将该扩展方法实现为静态方法,并使其至少具有与包含类相同的可见性。
            3.该方法的第一个参数指定方法所操作的类型;该参数必须以 this 修饰符开头。
            4.在调用代码中,添加一条 using 指令以指定包含扩展方法类的命名空间。
            5.按照与调用类型上的实例方法一样的方式调用扩展方法。
            请注意,第一个参数不是由调用代码指定的,因为它表示正应用运算符的类型,并且编译器已经知道对象的类型。 您只需通过 n 为这两个形参提供实参。
    
    
            1、扩展方法为静态方法,所在的类必须为静态类,方法第一个参数必须以this修饰符开头。
            2、扩展方法在使用的时,必须能够访问到。
            3、在使用时需引入扩展方法所在的命名空间。
                当然你也可以直接使用要扩展的类型的命名空间,
                比如string类型的命名空间为System,
                你可以使用System作为StringExtension的命名空间,
                这样使用的时候不需要引入命名空间了。但一般不建议这样做!
        */
    
    
        public class Class6
        {
            public static void test1()
            {
                string str1 = "123";
                Console.WriteLine(str1.GetBytesLength());
    
                string str2 = "123";
                Console.WriteLine(str2.GetStrJoinName("一二三"));
    
                int id1 = 123;
                Console.WriteLine(id1.GetStringFormat());            
    
                Student student1 = new Student { Name = "name1", LastName = "name2" };
                Console.WriteLine("name:" + student1.GetName());
                Console.WriteLine("old name:" + student1.GetLastName());
            }
        }
    
    
        public class Student
        {
            public string Name { get; set; }
            public string LastName { get; set; }
            public string GetName()
            {
                return this.Name;
            }
        }
        //Student 扩展
        public static class StudentExt
        {
            public static string GetLastName(this Student source)
            {
                return source.LastName;
            }
        }
    
    
        //int 扩展
        public static class IntExtension
        {
            public static string GetStringFormat(this int source)
            {
                return "字符串格式:" + source.ToString();
            }        
        }
    
        //string 扩展
        public static class StringExtension
        {
            //获取字符串的字节数
            public static int GetBytesLength(this string source)
            {
                byte[] bytes = Encoding.Default.GetBytes(source);
                return bytes.Length;
            }
    
            //字符串连接
            public static string GetStrJoinName(this string source, string name)
            {
                return source + " 连接 " + name;
            }
        }
    
    
    
    }
  • 相关阅读:
    Sql Server常见错误
    sql server复制需要有实际的服务器名称才能连接到服务器
    学习WCF必备网址
    利用Httphandler、UserControl 输出HTML片段
    SQL点滴—性能分析之执行计划
    我的WCF开发框架简化版及基于NET.TCP传输方式的实现
    数据库优化建议
    实现jQuery扩展总结
    【模板】zkw线段树
    洛谷 P1960 列队
  • 原文地址:https://www.cnblogs.com/guxingy/p/10435821.html
Copyright © 2011-2022 走看看