分类 C# 下的文章

Convert.Toint32(double value)取整时的四舍六入五成双规则

用Convert.Toint32()给小数转换成整数时,会四舍五入。比如:

Convert.Toint32(4.1) = 4
Convert.Toint32(4.3) = 4
Convert.Toint32(4.51) = 5
Convert.Toint32(4.6) = 5

但是,如果小数后面是.5 或者.50 之类的中间数,转换后的结果就让大家意向不到了。总之,结果是:
如果value为两个整数中间的数字,则返回二者中的偶数。
比如Convert.Toint32(3.5),3.5是整数3和4之间的数,此时取偶数4
比如Convert.Toint32(4.5),4.5是整数4和5之间的数,此时取偶数4




阅读剩余部分

C#在后台程序中动态创建HTML标签(div,span,a,p等)

案例代码如下:
1,创建div、span、a标签时,核心是用了System.Web.UI.HtmlControls命名空间下的HtmlGenericControl类
2,如果要创建input标签,要用HtmlInputText类

HtmlGenericControl divList = new HtmlGenericControl("div");

if (dsrow["ReadFlag"].ToString() == "已读")
{
    divList.Attributes.Add("class", "list read");
}
else
{
    divList.Attributes.Add("class", "list");
}
HtmlGenericControl a = new HtmlGenericControl("a");
a.Attributes.Add("href", msg_url);
divList.Controls.Add(a);

HtmlGenericControl divMeta = new HtmlGenericControl("div");
divMeta.Attributes.Add("class", "meta");

HtmlGenericControl spanSort = new HtmlGenericControl("span");
spanSort.Attributes.Add("class", "sort " + sorttype + "");
spanSort.InnerText = dsrow["msg_typename"].ToString();
divMeta.Controls.Add(spanSort);

HtmlGenericControl spanStatus = new HtmlGenericControl("span");
spanStatus.Attributes.Add("class", "status");
spanStatus.InnerText = dsrow["ReadFlag"].ToString();
divMeta.Controls.Add(spanStatus);

a.Controls.Add(divMeta);

HtmlGenericControl divTitle = new HtmlGenericControl("div");
divTitle.Attributes.Add("class", "title");
divTitle.InnerText = dsrow["msg_title"].ToString();

a.Controls.Add(divTitle);

HtmlGenericControl divInfo = new HtmlGenericControl("div");
divInfo.Attributes.Add("class", "info");

HtmlGenericControl spanMan = new HtmlGenericControl("span");
spanMan.Attributes.Add("class", "man");
spanMan.InnerText = DeptName + " · " + UserName;
divInfo.Controls.Add(spanMan);

HtmlGenericControl spanTime = new HtmlGenericControl("span");
spanTime.Attributes.Add("class", "time");
spanTime.InnerText = dsrow["Push_date"].ToString();
divInfo.Controls.Add(spanTime);

a.Controls.Add(divInfo);

dataBind.Controls.Add(divList);

要点:
1,要创建html标签,找到对应的类,new一个对象出来即可
2,对象名称.Attributes.Add("属性名称","属性值")添加class、href等属性
3,对象名称.InnerText = "标签的文本内容"
4,对象名称.Controls.Add(子标签名称),这个用来实现HTML标签嵌套、层级关系。

WebForm中GridView获取点击那一行的指定列的值

在古老的WebForm中,用GridView控件实现了一个数据列表,列表最后一列是用asp:ButtonField实现的修改按钮,点击修改时,要打开该条新闻的修改界面,这里有一个关键点,就是必须获取到点击新闻的ID,ASPX前端代码如下:

<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" OnRowCommand="GridView_RowCommand">
    <Columns>
        <asp:BoundField HeaderText="新闻ID" DataField="ID" Visible="false" />
        <asp:BoundField HeaderText="新闻标题" DataField="Title" />
        <asp:BoundField HeaderText="发布时间" DataField="PubTime" />
        <asp:ButtonField HeaderText="操作" Text="修改" CommandName="look" />
    </Columns>
</asp:GridView>

阅读剩余部分

C#使用IndexOf、LastIndexOf、IndexOfAny、LastIndexOfAny在字符串中查找某个字符或字符串

一、IndexOf
用于搜索在一个字符串中,某个特定的字符或者字符串第一次出现的位置,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包含这个字符或子串,则返回-1。

二、LastIndexOf
用于搜索在一个字符串中,某个特定的字符或者字符串最后一次出现的位置,其方法定义和返回值都与IndexOf相同。

以上2个方法用法几乎相同,只是用途有差异,常用的重载形式如下所示:



阅读剩余部分

C#版本、.NET版本、Visual Studio版本对应关系

网上找的,我综合了下,信息不是特别精准,做参考没问题的。

C#版本.NET版本Visual Studio版本发布日期特性
C# 1.0.NET Framework 1.0Visual Studio .NET 20022002-02-13委托、事件
C# 1.1.NET Framework 1.1Visual Studio .NET 20032003-04-24APM(异步编程模型)
C# 2.0.NET Framework 2.0Visual Studio 20052005-11-07泛型、匿名方法、迭代器、可空类型
C# 3.0.NET Framework 3.0Visual Studio 20082007-11-06隐式类型
.NET Framework 3.5 2007-11-19对象集合初始化、自动实现属性、匿名类型、扩展方法、查询表达式、Lambda表达式、 表达式树、分部类和方法、Linq
C# 4.0.NET Framework 4.0Visual Studio 20102010-04-12动态绑定、命名和可选参数、泛型的协变和逆变、互操作性
C# 5.0.NET Framework 4.5Visual Studio 2012/20132012-08-15异步和等待(async和await)、调用方信息(Caller Information)
C# 6.0.NET Framework 4.6Visual Studio 20152015-07-20C# 6 中的新增功能
.NET Core 1.0 2016-06-27
C# 7.0.NET Framework 4.6.2Visual Studio 20172016-08-02C# 7.0 中的新增功能
C# 7.1.NET Framework 4.7Visual Studio 2017 v15.32017-04-05
.NET Core 2.0 2016-08-14.NET Core 2.0 的新增功能
C# 7.2.NET Framework 4.7.1Visual Studio 2017 v15.52017-10-17
C# 7.3.NET Framework 4.7.2Visual Studio 2017 v15.72018-04-30
.NET Core 2.1 2018-05-30.NET Core 2.1 的新增功能
.NET Core 2.2 2018-12-04.NET Core 2.2 的新增功能
C# 8.0.NET Framework 4.8Visual Studio 2019 16.32019-04-18C# 8.0 中的新增功能
.NET Core 3.0 2019-09-23.NET Core 3.0 的新增功能
.NET Core 3.1 2019-12-03.NET Core 3.1 的新增功能

另外,.NET 5到目前为止,已经发布到第七个预览版了,.NET5的最新信息请参考:https://dotnet.microsoft.com/download/dotnet/5.0