我正在阅读一本关于ASP.NET MVC的书,我想知道以下示例是如何工作的:
public class MyController : Controller
{
public ActionResult Index()
{
ViewBag.MyProperty = 5;
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
<h1>@ViewBag.MyProperty</h1>
Run Code Online (Sandbox Code Playgroud)
现在我明白了ViewBag是一个动态的对象,所以这是如何设置的属性(虽然我不知道很多关于动态对象,从来没有与他们合作.)但如何看法得到的特定实例ViewBag从控制器,即使我们没有直接传递任何东西?
我认为它ViewBag可能是一个public static对象,但是对它的任何改变都是全局的,它不会特定于视图实例.
你能详细说明这是如何在幕后工作的吗?
public class MyController : Controller
{
public ActionResult Index()
{
ViewBag.MyProperty = 5;
return View();
}
public ActionResult Index2()
{
ViewBag.MyProperty = 6;
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
现在让我们说Index首先调用该方法,然后调用Index2.最后,值ViewBag.MyProperty将最终为6(来自的值Index2).我觉得这不是一件好事,但与此同时我觉得我在思考桌面开发术语.也许与ASP.NET MVC一起使用无关紧要,因为Web是无状态的.是这样的吗?
我是Java的新手,我一直在尝试实现一种算法,用于查找立方体方程的根.当我计算判别式并尝试检查其相对于零的位置时,就会出现问题.
如果运行它并输入数字"1 -5 8 -4",输出如下:
1 -5 8 -4
p=-0.333333, q=0.074074
disc1=0.001372, disc2=-0.001372
discriminant=0.00000000000000001236
Discriminant is greater than zero.
Run Code Online (Sandbox Code Playgroud)
我知道问题出现了,因为双打的计算并不准确.通常判别式应为0,但最终为0.00000000000000001236.
我的问题是,避免这种情况的最佳方法是什么?我应该检查数字是否介于epsilon邻域为零之间?还是有更好更精确的方法?
提前感谢您的回答.
import java.util.Scanner;
class Cubical {
public static void main(String[] args) {
// Declare the variables.
double a, b, c, d, p, q, gamma, discriminant;
Scanner userInput = new Scanner(System.in);
a = userInput.nextDouble();
b = userInput.nextDouble();
c = userInput.nextDouble();
d = userInput.nextDouble();
// Calculate p and q.
p = (3*a*c - b*b) / (3*a*a);
q = (2*b*b*b) / (27*a*a*a) …Run Code Online (Sandbox Code Playgroud) 我一直在学习C#,并希望查看一些开源项目,看看一些好的编写代码.我在sourceforge上找到了一个名为Todomoo的项目,有一个令我困惑的部分:
public class Category {
// Note properties
private int id = 0;
private string name = "";
private Color colour = Color.Gray;
/// <summary>
/// Create a new category.
/// </summary>
public Category() { }
/// <summary>
/// Load a category from the database.
/// </summary>
/// <param name="Id">ID of the category</param>
public Category(int id) : base() {
Load(id);
}
Run Code Online (Sandbox Code Playgroud)
它base()在其中一个构造函数中使用,但该类不是派生类.那究竟是什么呢?
为什么语法base()是这样而不是:
public Category(int id) {
base();
Load(id);
}
Run Code Online (Sandbox Code Playgroud) 我们需要在具有静态方法的代码中使用非托管库.我想在我的代码中将库操作作为依赖项引入.除了具有静态方法之外,库还具有初始化方法和设置方法,两者都是全局的.所以我不能将它包装在一个实例类中,因为如果一个实例更改了一个设置,那么所有其他实例都会受到影响,如果一个实例被初始化,所有其他实例都将被重新初始化.
我想把它作为一个单独的类引入.这样它将在实例类中,但只有一个实例,因此我不必担心更改设置或初始化.您如何看待这种方法?我对依赖注入模式很新,我不确定单例模式是否是一个好的解决方案?您对类似案例的解决方案是什么?
编辑:初始化也接受一个参数,所以我不能只是锁定方法调用,并在每次调用时重新初始化和更改设置.
编辑2:以下是一些方法的签名:
public static void Initialize(int someParameter)
// Parameter can only be changed by re-initalization which
// will reset all the settings back to their default values.
public static float[] Method1(int someNumber, float[] someArray)
public static void ChangeSetting(string settingName, int settingValue)
Run Code Online (Sandbox Code Playgroud) c# singleton refactoring dependency-injection static-classes
有没有办法在ReSharper中创建一个大写名称的模板?
例如,我想做这样的事情:
private $type$ _$name$;
public $type$ $uppercase_name$
{
get { return _$name$; }
set { _$name$ = value; }
}
Run Code Online (Sandbox Code Playgroud)
所以当我进入" 城市 "时$name$,$uppercase_name$应该自动成为" 城市 ".
我正在图书馆检查WindowChrome课程System.Windows.Shell(v 3.5.41019.1).当我尝试创建Window模板时,模板中Border元素的边距似乎没有效果:
<Window x:Class="WpfApplication7.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:shell="clr-namespace:Microsoft.Windows.Shell;assembly=Microsoft.Windows.Shell"
Title="MainWindow" Height="350" Width="525" Style="{DynamicResource WindowStyle1}">
<Window.Resources>
<Style x:Key="WindowStyle1" TargetType="{x:Type Window}">
<!-- Here is the WindowChrome.-->
<Setter Property="shell:WindowChrome.WindowChrome">
<Setter.Value>
<shell:WindowChrome />
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<!-- And here is the Border. Its margin has no effect as far as I can tell.-->
<Border Margin="25" Background="Red">
<AdornerDecorator>
<ContentPresenter/>
</AdornerDecorator>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
您认为原因是什么?我想知道,因为我看到有些人使用像*这样的东西:
<Border x:Name="WindowBorder" Margin="{Binding Source={x:Static …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用MPI编写矩阵向量乘法程序.我正在尝试将矩阵的列发送到单独的进程并在本地计算结果.最后我做了一个MPI_Reduce使用MPI_SUM操作.
发送矩阵的行很容易,因为C按行主顺序存储数组,但列不是(如果不逐个发送).我在这里读到了这个问题:
Jonathan Dursi建议使用新的MPI数据类型,这就是我通过根据自己的需要调整代码来完成的工作:
double matrix[10][10];
double mytype[10][10];
int part_size; // stores how many cols a process needs to work on
MPI_Datatype col, coltype;
// ...
MPI_Type_vector(N, 1, N, MPI_DOUBLE, &col);
MPI_Type_commit(&col);
MPI_Type_create_resized(col, 0, 1*sizeof(double), &coltype);
MPI_Type_commit(&coltype);
// ...
MPI_Scatter(matrix, part_size, coltype,
mypart, part_size, coltype,
0, MPI_COMM_WORLD);
// calculations...
MPI_Reduce(local_result, global_result,
N, MPI_DOUBLE,
MPI_SUM,
0, MPI_COMM_WORLD);
Run Code Online (Sandbox Code Playgroud)
这很完美,但我不能说我真的明白它是如何工作的.
MPI_Type_vector存储在内存中?MPI_Type_create_resized()工作如何以及它究竟做了什么?请记住,我是MPI的初学者.提前致谢.
假设您正在使用返回错误代码的库.您想为库编写一个包装器,并且您希望在代码中处理异常错误.
如果该库仍由其他人开发,并且如果错误代码可能会更改(可能会有新的错误代码,可能会有弃用代码,或者某些错误代码可能会略有改变),您的解决方案是什么?
这就是我现在所处的情况.在我的例子中,库是用C++编写的,我们使用的是C#.该库的编码器说错误代码可能会改变,我必须找到一种方法来处理它.
我们最初的解决方案是:
因此,假设一个方法返回错误代码100,然后包装器检查错误代码的类别.如果是终端错误则抛出终端错误异常,如果是用户输入错误则抛出用户输入错误异常.
这应该有效,但我觉得这不是最佳解决方案.我想知道编写的企业软件如何处理错误代码的更改.
你会建议做什么?
编辑:我已经质疑错误代码将会改变的事实,并且库的编码器说代码正在开发中.这是一种算法,所以即使算法的工作方式也会因为它的原始研究而改变(他正在撰写博士论文).所以他说可能会有不同的错误,或者有些可能在将来无关紧要.
在React Native应用程序中实现以下方案的最佳方法是什么?
React Native是否有一个开箱即用的组件?如果没有,人们用来处理这个问题的最常见方式是什么?
当您使用int*C#中的指针时,您需要使用unsafe关键字,但是当您使用关键字时IntPtr,则不需要.这些有什么区别?他们都可以指向一个地址.
垃圾收集器如何处理这两种类型?他们的处理方式不同吗?如果是这样,有什么区别?如果没有,为什么需要unsafe关键字?
编辑:非常感谢大家到目前为止的答案,但我想知道的是框架和垃圾收集器如何处理它们,而不是MSDN的定义IntPtr.只需要一次谷歌搜索即可.我想知道为什么IntPtr不需要unsafe关键字?我想了解为什么我们可以在没有关键字的情况下使用它.