Необязательные параметры сбивают с толку компилятор, для какой функции он должен использовать.
Кроме того, компилятор не может различать параметры newValue и newName между двумя функциями, поскольку они являются строками во втором слоте.
Вы не используете newName во второй функции - это там относится?
Возможно, вы захотите рассмотреть что-то вроде этого:
Protected Overloads Function updateResxNodes(ByVal keyCtrl As String, ByVal newValue As String) As List(Of ResXDataNode)
Return updateResxNodes(keyCtrl, newValue, String.Empty, String.Empty)
End Function
Protected Overloads Function updateResxNodes(ByVal keyCtrl As String, ByVal newValue As String, ByVal newName As String) As List(Of ResXDataNode)
Return updateResxNodes(keyCtrl, newValue, newName, String.Empty)
End Function
Protected Overloads Function updateResxNodes(ByVal keyCtrl As String, ByVal newValue As String, ByVal newName As String, ByVal newComment As String) As List(Of ResXDataNode)
Dim resxNodesList As List(Of ResXDataNode) = getResourceData()
For i As Integer = 0 To resxNodesList.Count - 1
If resxNodesList.Item(i).Name = keyCtrl Then
Dim name As String = resxNodesList.Item(i).Name
Dim comment As String = resxNodesList.Item(i).Comment
Dim newResxNode As ResXDataNode = New ResXDataNode(name, newValue)
newResxNode.Comment = comment
resxNodesList.RemoveAt(i)
resxNodesList.Add(newResxNode)
Exit For
End If
Next
Return resxNodesList
End Function