小编kis*_*pit的帖子

是什么原因导致Microsoft不保证Random类的实现在.NET版本中保持不变?

引自在线文档:

调用者注释:在.NET Framework的主要版本中,不保证Random类中随机数生成器的实现保持不变.因此,您的应用程序代码不应假定相同的种子将在.NET Framework的不同版本中产生相同的伪随机序列.

是什么原因导致Microsoft不保证Random类的实现在.NET版本中保持不变?更具体地说,微软不保证同一种子在主要版本的.NET框架中产生相同的随机数序列的原因是什么?

.net c# versioning random

6
推荐指数
2
解决办法
248
查看次数

C#编译器不限制浮点文字的小数部分的位数

这仅用于学术目的.

我注意到对于整数文字,我们可以声明 18446744073709551615哪个是2^64-1ulong.MaxValue.定义大于此值会产生编译时错误.

对于浮点文字,我们可以使用整数部分声明它们999...999(9重复308次).再次使用更多数字声明整数部分会产生编译时错误.我感兴趣的一件事是编译器似乎允许我们指定小数部分无限数字的位数.实际上,小数部分的无限数字位数没有意义.

问题:

  1. 是否有一个常量表示C#编译器内部定义的最大位数,用于浮点数的小数部分?

  2. 如果存在这样的常量,当用户指定超出其限制的小数部分时,为什么C#编译器不会抛出编译时错误?

最小工作示例1

namespace FloatingPoint
{
    class Program
    {
        static void Main(string[] args)
        {
            const ulong @ulong = 18446744073709551615;
            const double @double = 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999;

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

最小工作示例2

using System;

namespace FloatingPoint
{
    class Program
    {
        static void Main(string[] args)
        {

            const double x01 = 0.9;
            const double x02 = 0.99;
            const double x03 = 0.999;
            const double x04 = 0.9999;

            const double x05 = 0.99999; …
Run Code Online (Sandbox Code Playgroud)

c#

6
推荐指数
1
解决办法
275
查看次数

如何查看System.Math.Sin的源代码?

在这个链接中,我们可以看到System.Math类的源代码.但我找不到正弦定义的源代码.

这里有什么我想念的吗?

.net c# clr

6
推荐指数
2
解决办法
2546
查看次数

如何使Maxima的输出更干净?

我想利用Maxima作为后端来解决我的LaTeX输入文件中使用的一些计算.我做了以下步骤.

步骤1

下载并安装Maxima.

第2步

创建一个名为cas.bat(例如)的批处理文件,如下所示.

rem cas.bat
echo off
set PATH=%PATH%;"C:\Program Files (x86)\Maxima-5.31.2\bin"
maxima --very-quiet -r %1 > solution.tex
Run Code Online (Sandbox Code Playgroud)

将批处理保存在下面的输入文件所在的同一目录中.这只是为了简单起见.

第3步

创建名为main.tex(例如)的输入文件,如下所示.

% main.tex
\documentclass[preview,border=12pt,12pt]{standalone}
\usepackage{amsmath}

\def\f(#1){(#1)^2-5*(#1)+6}


\begin{document} 

\section{Problem}
Evaluate $\f(x)$ for $x=\frac 1 2$.

\section{Solution}
\immediate\write18{cas "x: 1/2;tex(\f(x));"}

\input{solution}

\end{document}
Run Code Online (Sandbox Code Playgroud)

第4步

编译输入文件,pdflatex -shell-escape main您将得到一个很好的输出,如下所示.

!在此输入图像描述

第5步

完成.

问题

显然,Maxima的输出如下.我不知道如何让它更清洁.

solution.tex

                                       1
                                       -
                                       2
$${{15}\over{4}}$$
                                     false
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是

  • 如何删除这些文本?
  • 如何获得\frac{15}{4}没有$$...$$

maxima

5
推荐指数
1
解决办法
5955
查看次数

为什么我需要显式转换来缩短三元运算符中的整数字面值?

static void Main()
{
    short x = 3;/* no need explicit casting (short)3 */
    Console.WriteLine(Factorial(x));
}
static short Factorial(short x)
{
    return x == 0 ? 
        (short)1 /* need explicit casting (short)1 */
        :
        (short)(x * Factorial((short)(x - 1)));
}
Run Code Online (Sandbox Code Playgroud)

为什么我需要short在三元运算符中对整数文字进行显式转换?

c# type-conversion

4
推荐指数
1
解决办法
289
查看次数

根据设计,为什么int没有单个参数ctor?

using System;

namespace FirstApplication
{
    class Program
    {
        static void Main(params string[] args)
        {
            int x = new int();
            x = 12;
            //int y = new int(12);
            Console.WriteLine(x);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

通过设计,为什么没有一个单一的参数构造函数为int使得x可被设置为12,而无需首先被设定为0?

c#

3
推荐指数
2
解决办法
167
查看次数

为什么Visual Studio的MVC模板在视图中而不是在相应的控制器中设置ViewBag.Title?

取自index.cshtml:

@model MvcMovie.Models.Movie

@{
    ViewBag.Title = "Details";
}

<h2>Details</h2>

<fieldset>
    <legend>Movie</legend>

    <div class="display-label">
Run Code Online (Sandbox Code Playgroud)

为什么Visual Studio的MVC模板在视图中而不是在相应的控制器中设置ViewBag.Title?

在我看来,任何设置都应该在控制器中完成,任何获取都应该在视图中完成.你怎么看呢?

c# asp.net asp.net-mvc asp.net-mvc-4

3
推荐指数
1
解决办法
8112
查看次数

如何检测字符串中非拉丁字符的存在?

我想将包含非拉丁字符的所有文件名更改为随机唯一的拉丁字符串.但是如何在原始文件名中检测到非拉丁字符的存在?

编辑

非拉丁字符可能是中文,日文,韩文,阿拉伯文,变音符号等字符.

c#

3
推荐指数
1
解决办法
1690
查看次数

如果try-catch可以用if-then-else替换,推荐哪一个?

在我粗略的调查中,我认为任何错误都可以通过使用if-then-else构造来处理.我们举一个简单的例子如下.

除以零可以处理

int x=1;
int y=0;
if(y==0)
    Console.WriteLine("undefined");
else
    Console.WriteLine("x/y={0}",x/y);
Run Code Online (Sandbox Code Playgroud)

替换try-catch等价物

int x=1;
int y=0;
try
{
    Console.WriteLine("x/y={0}",x/y);
}
catch
{
    Console.WriteLine("undefined");
}
Run Code Online (Sandbox Code Playgroud)

如果try-catch可以用if-then-else替换,推荐哪一个?

c#

2
推荐指数
1
解决办法
1499
查看次数

内连接的交换性

我从这个答案中读到(点击),以下条件语句

Invoices.CustomerID=Customers.CustomerID
Run Code Online (Sandbox Code Playgroud)

Customers.CustomerID=Invoices.CustomerID
Run Code Online (Sandbox Code Playgroud)

是相同的,因为它产生相同的结果集。

现在,我的问题是关于内连接的交换性。我尝试了以下两种方法,它们产生相同的结果集(列顺序除外)。

Customers先表

use MMABooks
select *
from Customers
    inner join Invoices
on Invoices.CustomerID=Customers.CustomerID
where Customers.CustomerID=10
Run Code Online (Sandbox Code Playgroud)

Invoices先表

use MMABooks
select *
from Invoices
    inner join Customers
on Invoices.CustomerID=Customers.CustomerID
where Invoices.CustomerID=10
Run Code Online (Sandbox Code Playgroud)

问题

  1. 内连接在设计上是可交换的吗?
  2. 是否有最佳实践建议或更喜欢其中一种方法而不是另一种方法?我的意思是,我应该使用哪种方法?

sql

1
推荐指数
1
解决办法
466
查看次数