小编Jer*_*gen的帖子

有没有尝试Convert.ToInt32 ...避免异常

我想知道是否有一种"安全"的方法将对象转换为int避免异常.

我正在寻找类似public static bool TryToInt32(object value,out int result)的东西;

我知道我可以做这样的事情:

public static bool TryToInt32(object value, out int result)
{
    try
    {
        result = Convert.ToInt32(value);
        return true;
    }
    catch
    {
        result = 0;
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我宁愿避免例外,因为它们正在减缓这个过程.

我认为这更优雅,但它仍然"便宜".

public static bool TryToInt32(object value, out int result)
{
    if (value == null)
    {
        result = 0;
        return false;
    }

    return int.TryParse(value.ToString(), out result);
}
Run Code Online (Sandbox Code Playgroud)

谁有更好的主意?

更新:

这听起来有点像分裂头发搜索.但是将对象转换为字符串会强制实现者创建一个清晰的ToString()函数.

例如:

public class Percentage
{
    public int Value { get; set; }

    public override …
Run Code Online (Sandbox Code Playgroud)

c# type-conversion

41
推荐指数
4
解决办法
6万
查看次数

C#lambda查询使用泛型类型

我有三个班,他们都有一个属性Date.我想编写一个泛型类来返回一个日期的所有记录.现在的问题是:如何使用泛型类型T编写lambda表达式?

代码简单如下(我不会编译,因为"r.Date"不起作用,但它是我想要实现的效果)

Class GenericService<T>: IGenericService<T> where T:class
{
      ...
      readonly IGenericRepository<T> _genericRepository;
      public IEnumerable<T> GetRecordList(DateTime date)
      {
             var query=_genericRepository.FindBy(r=>r.Date=date);
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

此致,Léona

c# generics lambda

13
推荐指数
3
解决办法
1976
查看次数

WPF中的常用工具提示样式

我可以制作工具提示样式,可以应用于每个控件的所有工具提示.

我试过这个.

<Style TargetType="{x:Type ToolTip}" >
        <Setter Property="OverridesDefaultStyle" Value="true" />
        <Setter Property="HasDropShadow" Value="True" />
        <Setter Property="Foreground" Value="White" />
        <Setter Property="FontSize" Value="12" />
        <Setter Property="Placement" Value="Bottom" />
        <Setter Property="VerticalOffset" Value="0" />
        <Setter Property="Padding" Value="8" />

        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ToolTip}" >
                    <StackPanel Margin="7,1" >
                      <Border Background="#FFF7F7CC" CornerRadius="1" >
                            <TextBlock Margin="1" Foreground="Black" HorizontalAlignment="Center" VerticalAlignment="Top" Text="{TemplateBinding ToolTip}"/>
                        </Border>
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
Run Code Online (Sandbox Code Playgroud)

对于使用此样式,我必须在控制中放置一个单独的Tooltip标记,例如将工具提示应用于边框,

<Border>
    <Border.ToolTip>
          <ToolTip ToolTip="This is tooltip text"  />
    </Border.ToolTip>
........
.........
</Border>
Run Code Online (Sandbox Code Playgroud)

但是有没有办法将tooltipstyle应用于所有控件,同时使用相同标签中提到的工具提示.例如.

<Border …
Run Code Online (Sandbox Code Playgroud)

wpf tooltip wpf-controls

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

加载 HTML 中的 GLSL 文件 (WebGL)?

我想要的是:

<script src="shader.glsl" type="x-shader/x-fragment"></script>
<script src="shader.glsl" type="x-shader/x-vertex"></script>
Run Code Online (Sandbox Code Playgroud)

或者:

<script src="shader.frag" type="x-shader/x-fragment"></script>
<script src="shader.vert" type="x-shader/x-vertex"></script>
Run Code Online (Sandbox Code Playgroud)

所以我有两种简单的着色器类型:

着色器来自此 WebGL 教程


  1. 我可以将这两种类型合二为一吗.glsl
  2. 如果不是,则着色器类型的其他文件格式如下:

    • .vert
    • .frag

问:我想用这个做什么?
答:从 JavaScript 动态加载我的文件并将其插入到我的 HTML 文件中。

问:你想知道如何动态加载文件吗?
答:不,这与“在 HTML 中加载 GLSL 文件 (WebGL)?”问题无关。

问:那你想要什么?
答:看看问题开头的“我想要什么”。

问:您想分享您的 JavaScript 导入代码吗?
答:是的,但我认为这是与回答问题无关的信息

javascript shader glsl webgl

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

创建android/desktop gdx项目的大Jar(桌面)

我已经设法使用gdx项目生成器设置了一个在android和桌面上运行的项目.(使用Android Studio 0.8.2)生成器生成了几个项目,如桌面,android,html,ios和核心.(目前,我没有对ios/html感兴趣)

我的问题是:我如何配置Gradle来构建一个大的Jar文件,我可以直接从windows运行,用于桌面配置?(所以我可以将我的游戏作为测试版传播给朋友)

我在build.gradle中看到过类似的东西:

task dist(type: Jar) {
    from files(sourceSets.main.output.classesDir)
    from files(sourceSets.main.output.resourcesDir)
    from { configurations.compile.collect { zipTree(it) } }
    from files(project.assetsDir);

    manifest {
        attributes 'Main-Class': project.mainClassName
    }

}
Run Code Online (Sandbox Code Playgroud)

但这并没有生成一个完整的Jar资源(android资产)

(不确定,但我还没有找到任何大罐子)

java android jar libgdx

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

Expression.Switch() 在案例实现上遇到困难

我正在尝试实现Expression.Switch()在表达式中创建 switch 语句。我正在努力解决一些问题。

我创建了一个引发异常的小示例。开关使用字符串来切换大小写,并在该大小写内分配一个变量。

下面是一些会引发异常的代码:

// an int variable
var var1 = Expression.Parameter(typeof(int));
// a string variable
var var2 = Expression.Parameter(typeof(string));

var cases = new[] 
{ 
    // the first case 'SwitchCaseValue1' should write the int value 1 into variable var1
    Expression.SwitchCase(Expression.Assign(var1, Expression.Constant(1)), Expression.Constant("SwitchCaseValue1")),
    // the second case 'SwitchCaseValue2' should write the string value 'Example' into variable var2 
    Expression.SwitchCase(Expression.Assign(var2, Expression.Constant("Example")), Expression.Constant("SwitchCaseValue2"))
};

Expression.Switch(Expression.Constant("SwitchValue"), cases);
Run Code Online (Sandbox Code Playgroud)

这将引发此异常:All case bodies and the default body must have the same type.

我认为这指的是Assign …

c# expression

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

Blazor - 使 InputText 适合父容器

我想制作一个在同一行上包含多个 InputText 的表单。但输入文本宽度始终为 203px。如何指定 InputText 以适合父宽度?

<div class="row">
    <div class="col-2">
        <label>Address</label>
    </div>

    <div class="col-3">
        <InputText @bind-Value="Address.Postcode" placeholder="Postcode" />
    </div>

    <div class="col-3">
        <InputText @bind-Value="Address.HouseNumber" placeholder="House Nb" />
    </div>

    <div class="col-4">
        <InputText @bind-Value="Address.Street" placeholder="Street" />
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

html css blazor

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

WebGL 计算着色器和 VBO/UBO

AFAIK 的计算着色器模型在 WebGL 中非常有限。这方面的文档就更少了。我很难找到我的问题的答案。

是否有可能在一个或多个 VBO/UBO 上执行计算着色器并更改它们的值?

webgl

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

Codebehind不起作用

这可能是这里有史以来最简单的问题.我正在使用Visual Studio 2010自学asp.net.但是我无法通过我的教程的第一个例子,并且不知道为什么.我只是无法在代码隐藏中启动Page_Load事件.非常简单的例子如下:

Default.aspx的:

<@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master"                AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>


<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:Label ID="MyLabel" runat="server"></asp:Label>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

default.aspx.vb

Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender as Object, by Val e As System.Eventargs)
    MyLabel.Text = "Hello, World!"
End Sub

End Class
Run Code Online (Sandbox Code Playgroud)

当我添加<%MyLabel.Text ="你好,世界!" %>到default.aspx,标签已填充.我无法在代码隐藏中的Page_Load事件中使用任何(response.writes等).

很抱歉打扰这样的事情,但在我解决这个简单的问题之前我无法继续前进.而且我很难过.

asp.net

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

没有ifs的随机值?

Random rd = new Random();
int question;
question = rd.Next(1,2);
if(question ==1)
{
    label1.Text = "What is your name?";
}
if(question ==2)
{
    label1.Text = "How old are you?";
}
Run Code Online (Sandbox Code Playgroud)

有没有办法缩短它?我需要这样做,但找到更短的选项,最好没有ifs.

c# random if-statement

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

如何将List <int []>转换为List <int>

private static void A(){
List<int[]> list = new List<int[]>();
int[] a = {0,1,2,3,4};
int[] b = {5,6,7,8,9};
list.Add(a);
list.Add(b);

List<int> list2 = new List<int>(); 
// list2 should contain {0,1,2,3,4,5,6,7,8,9}
}
Run Code Online (Sandbox Code Playgroud)

我如何将我List<int[]> list变成一个List<int>所有int[] arrays成为一个巨大的数字列表

c#

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