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());
}
}
}