m实际上是由5+6+7组成的,所以是18。
i++的意思是,先取i的值来使用,然后对i自增,因此上面三个i++中实际上使用的i的值是5,6,7。
++i的意思是,先自增i,再取自增后的i的值来使用,因此如果上面三个是++i,那么实际使用的值就是6,7,8。
一般编程中尽量避免这种代码写法,提高易读性和减少歧义。
给你个例子参考下:public string GetAutoDocNo()
{
string DocNo = "AD"
string today = DateTime.Today.Date.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo)
DataSet DocDs = GetDataSet(" select * from News")
//初始化
if (DocDs.Tables[0].Rows.Count == 0)
{
DocNo += today + "101"
return DocNo
}
/***********************/
else if (DocDs.Tables[0].Rows.Count >0)
{
int count = 0
string oldDocNo = string.Empty
for (int i = 0i <DocDs.Tables[0].Rows.Counti++)
{
oldDocNo = DocDs.Tables[0].Rows[i]["NewsID"].ToString()
oldDocNo = oldDocNo.Substring(2, 8)
if (oldDocNo == today) count++
}
if (count == 0/*当天还没有单*/)
{
DocNo += today + "1001"//前面有1比较方便,没有1在后面做的时候要稍微再加几行代码
return DocNo
}
else if (count >0/*当天已经有单*/)
{
DocDs = GetDataSet("select MAX(CAST(SUBSTRING(NewsID,3,12) AS BIGINT)) as NewsID from News where
(SUBSTRING(NewsID,3,8))='" + today + "'")
string id = DocDs.Tables[0].Rows[0]["NewsId"].ToString()
string lastid = id.Substring(8, 3)
try
{
decimal lastidec = decimal.Parse(lastid)
lastidec += 1
return DocNo + today + (lastidec.ToString())
}
catch (Exception)
{
throw
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)