小编Shi*_*mmy的帖子

当我知道该值不会超过 255 时,设置tinyint 字段是否有优势?

我应该选择尽可能小的数据类型,或者如果我存储值 1,那么 col 数据类型是什么并不重要,并且该值将占用相同的内存大小?

问题还在于,因为我总是必须转换它并在应用程序中使用。


更新

我认为如果 value 是“a”,则 varchar(1) 和 varchar(50) 的内存大小相同,我认为 int 和tinyint 是相同的,根据我理解的答案,它不是,是吗?

sql sql-server int tinyint sqldatatypes

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

如何将空字符串作为ConverterPararmeter传递?

您好我有一个Binding,我正在使用转换器,我希望传输到转换器的参数应该是一个空字符串.有没有办法通过内联绑定传递它?

wpf binding

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

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

签名整数的Endian转换

我通过UDP接收大端数据并将其转换为小端.消息来源说整数是有符号的,但是当我交换有符号整数的字节(特别是16位)时,我会得到不切实际的值.当我把它们换成无符号的整数时,我得到了我的期望.我想源文档可能不正确,实际上是发送无符号的16位整数.但为什么会这么重要?这些值都应该是正数,并且在16位INT_MAX下,因此溢出不应该是一个问题.我唯一能想到的是(1)文档错误和(2)当我执行有符号的字节序交换时,我没有正确处理符号位.

我真的有两个问题:

1)当溢出不成问题时,我是否读入有符号或无符号的整数是否重要.

2)有符号值和无符号值之间的字节序交换是否不同(即符号位是否需要以不同方式处理)?

我认为对于有符号和无符号值,endian转换看起来都是相同的,例如对于16位value = value&0xff00 >> 8 | value&0x00ff << 8.

谢谢

endianness

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

WhereNot linq表达式

我正在尝试创建一个扩展名"WhereNot"

所以我可以用:

Dim x = "Hello world "
Dim y = x.Split.WhereNot(AddressOf String.IsNullOrEmpty)
Run Code Online (Sandbox Code Playgroud)

请注意,我的目标是学习linq表达式; 没解决我的问题.

我创造了这个功能:

 <Extension()> _
 Public Function WhereNot(Of TElement)(ByVal source As IQueryable(Of TElement), ByVal selector As Expression(Of Func(Of TElement, Boolean))) As IQueryable(Of TElement)
  Return source.Where(GetWhereNotExpression(selector))
 End Function
Run Code Online (Sandbox Code Playgroud)

我不知道如何切换布尔标志,函数Negate会这样做吗?

vb.net和C#的答案都很受欢迎

.net linq expression expression-trees linq-expressions

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

类级验证

我正在使用DataAnnotationsutils 验证一个类.

我有一个Title有财产和Item财产的班级.我想对属性应用a RequiredAttribute,Title但只有当Item属性为null时它才应该无效; 如果Item使用对象设置属性,Title则不需要.

简而言之,我希望RequiredAttribute仅在满足类中的条件时才进行验证.

如何才能做到这一点.

更新

由于我没有找到其他方式,并且因为我通常不经常需要这个功能,所以我决定使用类级验证器进行粗略的处理.我的问题是,有没有办法手动更新UI,使标题文本框具有红框,即使其无效?

更新2
我希望类级验证器在字段上进行汇总.例如,我必须填写Cost和SalesPrice字段,我想确保SalesPrice> Cost并使SalesPrice无效,否则,我不希望在类级别上出现全局验证错误.

我喜欢以xamly的方式做到这一点.

.net validation wpf data-annotations

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

避免重复的事件处理程序?

如何避免事件被处理两次(如果是相同的处理程序?)

Module Module1
  Sub Main()
    Dim item As New Item
    AddHandler item.TitleChanged, AddressOf Item_TitleChanged
    AddHandler item.TitleChanged, AddressOf Item_TitleChanged

    item.Title = "asdf"

    Stop
  End Sub
  Private Sub Item_TitleChanged(sender As Object, e As EventArgs)
    Console.WriteLine("Title changed!")
  End Sub
End Module

Public Class Item
  Private m_Title As String
  Public Property Title() As String
    Get
      Return m_Title
    End Get
    Set(ByVal value As String)
      m_Title = value
      RaiseEvent TitleChanged(Me, EventArgs.Empty)
    End Set
  End Property

  Public Event TitleChanged As EventHandler
End Class
Run Code Online (Sandbox Code Playgroud)

输出:

Title changed!
Title …
Run Code Online (Sandbox Code Playgroud)

vb.net events event-handling

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

有没有一种 xamly 方法可以为 KeyBinding 设置多个修饰符?

我试过:

<KeyBinding Key="S" Modifiers="Control, Shift"/>
Run Code Online (Sandbox Code Playgroud)

<KeyBinding Key="S" Modifiers="Control|Shift"/>
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

.net wpf key-bindings

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

Task.WhenAny ContinueWith:获取参数?

我想执行一个任务列表,并在完成任何任务后执行同步操作,但我需要知道它们中的哪一个.

看看我的例子,并注意代码中的注释,这些注释位于我不知道如何实现的几行之前.

public async Task<bool> GreetAsync(string name)
{
  if (name == null)
    return false;

  await InternalGreeter.GreetAsync(name);
  return true;
}

public async Task GreetAllAsync()
{
  var tasks = UserNames.Select(un => GreetAsync(un)).ToList();

  while(tasks.Any())
  {
    var finished = await Task.WhenAny(tasks);

    if(finished.Result)
    {
      //Here's what I'd like to achieve
      var username = finished.Arguments[0];
      WriteLine($"User {username} has been greeted.");
    }

    tasks.Remove(finished);
  } 
}
Run Code Online (Sandbox Code Playgroud)

基于这个例子.

在我的真实世界场景中,我有一个客户列表,我必须逐个走过它们并更新远程服务器的信用状态(远程服务器不支持批量更新).在每个更新后,我必须在我的数据库中标记该客户已获得认证.

c# asynchronous task async-await

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

棱镜自定义确认交互

我在Prism Unity,WPF和Mvvm的应用程序中创建了一个自定义确认窗口.我需要有关需要发送回viewmodel的通知的帮助.我在详细记录视图中有这个,我们称之为MyDetailView.

<!-- Custom Confirmation Window -->
<ie:Interaction.Triggers>
  <interactionRequest:InteractionRequestTrigger 
       SourceObject="{Binding ConfirmationRequest, Mode=TwoWay}">
     <mycontrols:PopupWindowAction1 IsModal="True"/>
  </interactionRequest:InteractionRequestTrigger>
</ie:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)

如上所示,我进行了交互Mode = TwoWay,以便确认弹出窗口可以发回OK或取消按钮的按钮点击结果.确认窗口应该出现,但我不知道如何将按钮点击结果发送回我的viewmodel,比如MyDetailViewModel.这是主要问题.

编辑:这是引发InteractionRequest的MyDetailViewMmodel方法.

private void RaiseConfirmation()
{ConfirmationRequest
    .Raise(new Confirmation()
    {
        Title = "Confirmation Popup",
        Content = "Save Changes?"
    },  c =>{if (c.Confirmed)
{ UoW.AdrTypeRos.Submit();}
Run Code Online (Sandbox Code Playgroud)

这是PopupWindowAction1类.问题的部分答案可能是如何实现Notification和FinishedInteraction方法.

class PopupWindowAction1 : PopupWindowAction, IInteractionRequestAware
{
    protected override Window GetWindow(INotification notification)
    { // custom metrowindow using mahapps
        MetroWindow wrapperWindow = new ConfirmWindow1();
        wrapperWindow.DataContext = notification;
        wrapperWindow.Title = notification.Title;

        this.PrepareContentForWindow(notification, wrapperWindow);

        return wrapperWindow;
    }

    public INotification Notification
    {
        get …
Run Code Online (Sandbox Code Playgroud)

wpf notifications interaction prism mvvm

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