首页 C# 正文
  • 本文约1525字,阅读需8分钟
  • 109
  • 0

C#基础语法

温馨提示:本文最后更新于2024年7月26日 20:25,若内容或图片失效,请在下方留言或联系博主。

特性

集合
迭代器

反射

反射它允许在运行时检查程序集、类型、方法和字段。这是一种非常强大的工具,因为它允许您动态地获取关于程序集、类型、方法和字段的信息,甚至可以动态地创建和调用类型。

获取类型

Type type = Type.GetType("System.String");

通过类型创建实例

object instance = Activator.CreateInstance(type);

调用方法

MethodInfo method = type.GetMethod("ToString");  
method.Invoke(instance, null);

获取程序集种所有类型

// 获取当前程序集中的所有类型  
Assembly assembly = Assembly.GetExecutingAssembly();
Type[] types = assembly.GetTypes();

获取类型

  Type baseType = typeof(Strategy);

获取所有子类

  var subclasses = types.Where(t => baseType.IsAssignableFrom(t) && !t.Equals(baseType));
                //在所有子类中通过特性获取指定类
                subclasses = subclasses.Where(_ => _.GetCustomAttribute<CustomAttribute>().Frm_id.Equals(input.Frm_id)
                && _.GetCustomAttribute<CustomAttribute>().Sys_id == input.Sys_id
                );

IsAssignableFrom指定类型实例是否能分配给当前类型实例
GetCustomAttribute 获取特性

系统类操作

DateTime
静态方法
方法 描述
DateTime.FromOADate(double d) 将数字转为日期,excel日期格式相同
Math

数字处理

静态方法
方法 描述
Math.Round 四舍六入五取整
Math.Ceiling 向上取整,只要有小数都加1
Math.Floor 向下取整,总是舍去小数
DataTable

表格处理

将DataTable取一列转为数组

string[] arrPic = dt.AsEnumerable().Select(d => d.Field<string>("column")).ToArray();

将DataTable列转List集合

List<string> litRate = picDt.AsEnumerable().Select(d => d.Field<string>("column")).ToList();

取得DataTable最大值

int max=int.Parse((dtItemsAll.Compute("Max(CPITEMS_SORT)", "true").ToString()));//最大值

取得DataTable最小值

int min=int.Parse((dtItemsAll.Compute("Min(CPITEMS_SORT)", "true").ToString()));//最小值

获取表格字段名

string [] Column=dt.Columns.Cast<DataColumn>().Select(_=>_.ColumnName);

字符串操作

将数组转为字符串

将数组转为以分号分隔的字符串

string.Join(";", new string[]{ "1","2","3" });

常用操作

进制转换

36进制转10进制

public static int int36Convert10(string str)
        {
            int d = 0;
            int b;
            char[] ch = str.ToCharArray();
            int j = 0;
            for (int i = ch.Length - 1; i >= 0; i--)
            {
                char c = ch[i];
                b = 1;
                for (int t = 0; t < j; t++)
                    b= b * 36;
                j++;
                int cc;
                if (c >= '0' && c <= '9')
                    cc = Convert.ToInt32(c) - 48;
                else
                    cc = Convert.ToInt32(c) - 65 + 10;
                d += cc * b;
            }
            return d;
        }
将文件读取为byte数组
FileStream fs = File.OpenRead(path); //OpenRead
int filelength = 0;
filelength = (int)fs.Length; //获得文件长度 
Byte[] image = new Byte[filelength]; //建立一个字节数组 
fs.Read(image, 0, filelength); //按字节流读取 
fs.Close();

####### 将byte数组转存文件(将数据流转存为文件)

数据库

C# 获取sqlserver 运行脚本的print消息

在sql脚本的编写中,我们经常使用sql脚本print消息,作为输出测试
通过获取print消息,我们可以快速获取程序中的错误信息,下文讲述通过 SqlInfoMessageEventHandler 获取print信息,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        webCrm.SAG tmp = new webCrm.SAG();
        protected void Page_Load(object sender, EventArgs e)
        {
            /*获取 sql print的消息信息*/
            string connectionString = "data source=***********;initial catalog=boss;user id=sa;password=erp;";
            using (SqlConnection sqlcon = new SqlConnection(connectionString))
            {
                sqlcon.Open();
                sqlcon.InfoMessage += new SqlInfoMessageEventHandler(OnReceivingInfoMessage);
                /* 查询某个表上的索引碎片的详细信息 */
                SqlCommand cmd = new SqlCommand("print '输出消息1'; set statistics io on ;select * from [ierror] ; print '输出sql消息完毕'", sqlcon);
                cmd.CommandType = CommandType.Text;
                cmd.ExecuteNonQuery();
            }
            Console.Read();
        }

        private void OnReceivingInfoMessage(object sender, SqlInfoMessageEventArgs e)
        {
            Response.Write("输出sql消息:" + e.Message.ToString());
        }
    }
}
标签:C#.Net
评论